var amLoadMask;
Ext.onReady(function() {
	// 定义下拉列表通用model
	Ext.define('combobox_model', {
		extend : 'Ext.data.Model',
		fields : [ {
			name : 'ID',
			type : 'string'
		}, {
			name : 'TEXT',
			type : 'string'
		} ]
	});
	// 定义通用loadmask
	amLoadMask = new Ext.LoadMask(Ext.getBody(),
	{
		msg:"正在处理,请稍候..."
	});
});
/**
 * 获取下拉列表的dataStore
 * 
 * @param {Object}
 *            dicTableName
 * @param {Object}
 *            dicColumnName
 * @return {TypeName}
 */
function getSelectDataStore(dicTableName,dicColumnName){
		var temp  = Ext.create('Ext.data.Store', {
			model : 'combobox_model',
			proxy : {
				type : 'ajax',
				url : rootPath + '/datadic/data-dic!getCommonDic.action',
				reader : {
					type : 'json',
					root : 'items'
				}
			},
			autoLoad:true
		});
		
		temp.on('beforeload', function(this_store, options) {
			var new_params = {
				dicTableName : dicTableName,
				dicColumnName : dicColumnName
			};
			Ext.apply(this_store.proxy.extraParams, new_params);
		});
		
		return temp;
}

/**
 * 获取所有账期的下拉列表的dataStore
 * 
 * @param {Object}
 *            dicTableName
 * @param {Object}
 *            dicColumnName
 * @return {TypeName}
 */
function getAllAcctMonthDS(){
		var temp  = Ext.create('Ext.data.Store', {
			model : 'combobox_model',
			proxy : {
				type : 'ajax',
				url : rootPath + '/datadic/data-dic!getAllAcctMonth.action',
				reader : {
					type : 'json',
					root : 'items'
				}
			},
			autoLoad:true
		});
		
		return temp;
}

/**
 * @desc config: modelName, methodName,params,callbackFun
 * @param methodName
 * @param config
 * @returns
 */
function getDDStore( config) {
	if (!config.modelName) {
		config.modelName = 'combobox_model';
	}
	var url = rootPath + '/datadic/data-dic!' + config.methodName + '.action';
	var store = Ext.create('Ext.data.Store', {
		model : config.modelName,
		proxy : {
			type : 'ajax',
			url : url,
			reader : {
				type : 'json',
				root : 'items'
			}
		}
	});
	
	if(config.params){
		store.on('beforeload', function(this_store, options) {
			var new_params = {
				jsonParams : Ext.encode(config.params)
			};
			Ext.apply(this_store.proxy.extraParams, new_params);
		});
	}
	if(config.callbackFun){
		store.load({
			callback:config.callbackFun
		});
	}else{
		store.load();
	}
	

	return store;
}

/**
 * 不同于ext的getFieldValues默认是根据name查询所有表单项的值
 * <P>
 * 该方法用id做key值,返回表单项的值记录
 * 
 * @param form的id或formPanel
 */
function getFormValues(f) {
	var obj = {};
	var form = (typeof (f) == 'string') ? Ext.getCmp(f).getForm() : f.getForm();
	form.getFields().each(function(field) {
		if (field.getXType() == "combobox") {
			obj[field.id + "_TEXT"] = field.getRawValue();
		}
		if (field.getXType() == "datefield") {
			obj[field.id] = field.getRawValue();
		} else {
			obj[field.id] = field.getValue();
		}
	});
	return obj;
}
/**
 * 根据id值设置form中field的值 如果是combobox,不触发对应绑定的事件,需要自己调用
 * 
 * @param data:json对象
 * @param f:form的id或formPanel
 */
function setFieldValueById(data, f) {
	var form = (typeof (f) == 'string') ? Ext.getCmp(f).getForm() : f.getForm();
	var fields = form.getFields();
	fields.each(function(field) {
		if (data[field.id]) {
			field.setValue(data[field.id]);
		}
	});
}

function isNULL(val) {
	if (val == null || val == "" || val == "undefined") {
		return true;
	}
	return false;
}
/**
 * grid中的序列
 * 
 * @param value
 * @param cellmeta
 * @param record
 * @param rowIndex
 * @param columnIndex
 * @param store
 * @returns
 */
function renderGridIndex(value, cellmeta, record, rowIndex, columnIndex, store) {
	return rowIndex + 1;
}
/**
 * gird的reader
 */
var grid_reader = {
		type : 'json',
		root : 'items',
		totalProperty : 'totalCount'
};
/**
 * 在ESOP父页面打开新的tab页面
 * <P>
 * 使用该函数创建的tab中的iframe页面的id是iframe_${tab_id}
 * 
 * @param tab_id
 * @param tab_title
 * @param link_url链接的url
 */
function openTopTab(tab_id,tab_title,link_url){
	var centerPanel = top.Ext.getCmp("center-Panel");
	if(!top.Ext.getCmp(tab_id)){
		centerPanel.add(
				{
					id : tab_id,
					title : tab_title,
					closable : true,
					forceFit : true,
					html : '<iframe scrolling="auto" id="iframe_'+tab_id+'"'
							+ 'frameborder="0" width="100%" height="100%" src="'
							+ link_url + '" ></iframe>'
				});
	}else{
		top.Ext.getDom("iframe_"+tab_id).src=  link_url;
	}
    centerPanel.setActiveTab(tab_id);
}
/**
 * 给girdpanel的store添加callback函数,
 * <p>
 * 并调用load方法
 * 
 * @param girdPanel或panel的id
 * @returns
 */
function addCallBack(p){
	var panel = (typeof (p) == 'string') ? Ext.getCmp(f) : p;
	var formTitle = "";
	if(panel.title){
		formTitle = panel.title;
	}	
	var store = panel.getStore();
	amLoadMask.show();
	store.load({
		callback : function(r, options, success) {
		amLoadMask.hide();
		if (!success) {
			Ext.Msg.show({
				title : '提示',
				msg : formTitle+'加载数据失败!<br>请联系管理员!',
				modal : true,
				icon : Ext.Msg.INFO,
				buttons : Ext.Msg.OK
			});
		}
	}
});
}
